package com.mind.customer.template;

// TableGenerator.java
import com.fasterxml.jackson.databind.JsonNode;

import java.util.ArrayList;
import java.util.List;

public class TableGenerator {
    public static String generateMarkdownTable(
            JsonNode rootNode,
            List<TableColumn> columns
    ) {
        // 1. 准备列数据
        List<List<String>> columnValues = new ArrayList<>();
        for (TableColumn column : columns) {
            List<String> values = JsonPathResolver.resolveValue(rootNode, column.getPath());
            columnValues.add(values);
        }

        // 2. 计算最大行数
        int maxRows = columnValues.stream().mapToInt(List::size).max().orElse(0);

        // 3. 构建表格
        StringBuilder markdown = new StringBuilder();

        // 表头
        markdown.append("|");
        for (TableColumn column : columns) {
            markdown.append(" ").append(column.getDisplayName()).append(" |");
        }
        markdown.append("\n");

        // 分隔线
        markdown.append("|");
        for (int i = 0; i < columns.size(); i++) {
            markdown.append("-----|");
        }
        markdown.append("\n");

        // 表格内容
        for (int row = 0; row < maxRows; row++) {
            markdown.append("|");
            for (int col = 0; col < columns.size(); col++) {
                List<String> values = columnValues.get(col);
                String value = row < values.size() ? values.get(row) : "";
                markdown.append(" ").append(value).append(" |");
            }
            markdown.append("\n");
        }

        return markdown.toString();
    }
}
